/*
    题目信息：实现双色球抽奖游戏中奖号码的生成，中奖号码由 6 个红球号码和 1 个蓝球号码组成。
    其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。
    其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。
 */

import java.util.Random;
import java.util.Arrays;

public class GenerateDoubleColorBallNum {
    public static void main(String[] args) {
        // 1.声明用来存储红球号码的数组，以及随机生成1-16的随机数作为篮球号码
        Random ra = new Random();
        int[] red_ball_nums = new int[6];
        int blue_ball_num = ra.nextInt(16) + 1;
        // 2. 初始化每个红球号码的数据
        for(int i = 0; i < 6; i++) {
            int num = ra.nextInt(33) + 1;
            boolean in_arr = true;  //作为判断当前生成的随机红球号码是否已经存在
            // 3.默认随机生成的红球号码已经存在，这样才可以进入while中进行实际判断，
            //  循环判断及生成随机数，直至当前随机数不在数组中存在。
            while(in_arr == true) {
                in_arr = false; //默认值需要更改在当前数字不存在，当号码确实已经在数组中存在再为true
                // 4.遍历当前数组已经有初始值的数值，判断生成的随机数是否存在
                for(int j = 0; j < i; j++) {
                    if(num == red_ball_nums[j]) {
                        in_arr = true;
                        break;
                    }
                }
                // 5. 遍历完所有数据后，若存在，则重新生成
                if(in_arr == true) {
                    num = ra.nextInt(33) + 1;
                } else {
                    in_arr = false;
                }
            }
            red_ball_nums[i] = num;
        }
        // 6. 打印双色球号码
        System.out.println("6个红球号码是：" + Arrays.toString(red_ball_nums));
        System.out.println("1个蓝球号码是：" + blue_ball_num);
    }
}
